package com.eastfair.auth.dto;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.eastfair.auth.enumeration.RoleRoleTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 *
 * </p>
 *
 * @author ligang
 * @since 2021-07-23
 */
@Data
@ApiModel(value = "RoleDTO", description = "")
public class RoleDTO implements Serializable {
    public interface createRole {
    }

    public interface udpateRole {
    }

    public interface udpateSystemRole {
    }

    private static final long serialVersionUID = 1L;

    /**
     * 角色主键id
     */
    @ApiModelProperty(value = "角色主键id")
    @NotNull(groups = {udpateRole.class, udpateSystemRole.class}, message = "请填写角色名称")
    private Long id;

    /**
     * 角色名称
     */
    @ApiModelProperty(value = "角色名称")
    @Size(max = 255, message = "角色名称长度不能超过255")
    @NotBlank(groups = {createRole.class, udpateRole.class}, message = "请填写角色名称")
    private String name;
    /**
     * 角色code码
     */
    @ApiModelProperty(value = "角色code码")
    @Size(max = 255, message = "角色code码长度不能超过255")
    private String code;
    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    @Size(max = 255, message = "描述长度不能超过255")
    private String description;
    /**
     * 是否生效(默认1：可用 0:不可用)
     */
    @ApiModelProperty(value = "是否生效(默认1：可用 0:不可用)")
    private Integer isEnabled;
    /**
     * 是否删除(默认0：未删除 1:已删除)
     */
    @ApiModelProperty(value = "是否删除(默认0：未删除 1:已删除)")
    private Integer isDeleted;
    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    private Long tenantId;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    private Long subsystemId;

    /**
     * 菜单id集合
     */
    @ApiModelProperty(value = "菜单id集合")
    @NotEmpty(groups = {udpateRole.class, udpateSystemRole.class}, message = "请填写菜单id集合")
    private List<Long> menuIds;
    /**
     * 组织id集合
     */
    @ApiModelProperty(value = "组织id集合")
    private List<Long> orgIds;

    /**
     * 事件id集合
     */
    @ApiModelProperty(value = "事件id集合")
    private List<Long> functionIds;


    /**
     * 业务标识
     */
    @ApiModelProperty(value = "业务标识")
    private String businessTag;
    /**
     * 团队ID
     */
    @ApiModelProperty(value = "团队ID")
    private Long teamId;

    /**
     * 角色类型#{P_ADMIN:厦门智慧场馆管理员;P_VENUE_ADMIN:场馆业务系统管理员;P_CERTIFICATE_ADMIN:证件系统管理员;P_COMPOSITE_VENUE_ADMIN:综合-场馆管理员;P_COMPOSITE_COURT_ADMIN:综合-主场管理员;P_COMPOSITE_PRODUCER_ADMIN:综合-搭建商管理员;P_COMPOSITE_TRANSPORT_ADMIN:综合-主运管理员;P_COMPOSITE_TRADE_ADMIN:综合-商旅管理员;P_COMPOSITE_MATING_ADMIN:综合-配套商管理员;P_PAY_ADMIN:支付系统管理员;P_EXHIBITOR_SELF_ADMIN:展商自服务管理员;P_CATERINGAPP_ADMIN:餐饮小程序用户;P_CATERING_ADMIN:餐饮后台管理员;P_PORTAL_OUT_VENUE_ADMIN:对外门户后台管理员;P_PORTAL_OUT_OPERATION_ADMIN:对外门户运营管理员;P_PORTAL_IN_WORK_ADMIN:内部门户后台管理员;P_PORTAL_IN_WORKAPP_ADMIN:内部门户APP用户;P_OPERATION_CENTER_ADMIN:智慧运营中心管理员;P_VISITOR_FRONT_ADMIN:访客系统用户;P_VISITOR_BACK_ADMIN:访客后台管理员;other:其他;}
     */
    @ApiModelProperty(value = "角色类型#{P_ADMIN:厦门智慧场馆管理员;P_VENUE_ADMIN:场馆业务系统管理员;P_CERTIFICATE_ADMIN:证件系统管理员;P_COMPOSITE_VENUE_ADMIN:综合-场馆管理员;P_COMPOSITE_COURT_ADMIN:综合-主场管理员;P_COMPOSITE_PRODUCER_ADMIN:综合-搭建商管理员;P_COMPOSITE_TRANSPORT_ADMIN:综合-主运管理员;P_COMPOSITE_TRADE_ADMIN:综合-商旅管理员;P_COMPOSITE_MATING_ADMIN:综合-配套商管理员;P_PAY_ADMIN:支付系统管理员;P_EXHIBITOR_SELF_ADMIN:展商自服务管理员;P_CATERINGAPP_ADMIN:餐饮小程序用户;P_CATERING_ADMIN:餐饮后台管理员;P_PORTAL_OUT_VENUE_ADMIN:对外门户后台管理员;P_PORTAL_OUT_OPERATION_ADMIN:对外门户运营管理员;P_PORTAL_IN_WORK_ADMIN:内部门户后台管理员;P_PORTAL_IN_WORKAPP_ADMIN:内部门户APP用户;P_OPERATION_CENTER_ADMIN:智慧运营中心管理员;P_VISITOR_FRONT_ADMIN:访客系统用户;P_VISITOR_BACK_ADMIN:访客后台管理员;other:其他;}")
    private RoleRoleTypeEnum roleType;

    /**
     * 来源角色id
     */
    @ApiModelProperty(value = "来源角色id")
    private Long sourceRoleId;


}
